<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2016/12/12 0012
 * Time: 下午 8:29
 */
class GoodsController extends Controller{

    //通过用户访问控制过滤实现页面缓存
    //过滤器
    //accessControl 是方法过滤器
    //array() 是类过滤器
    function filters(){
        return array(
          //'accessControl'.
          //类过滤器 实现页面整体缓存
          //只针对detail 页面
          array(
              'system.web.widgets.COutputCache + detail',
              'duration'=>1800,//设置缓存时间
              'varyByParam'=>array('id'),////根据page的参数，生成不同的缓存页面
          ),
        );
    }

    function actionCategory(){
        //通过数据模型获得商品信息
        $goods_model = Goods::model();
//        $goods_infos = $goods_model->findAll();

        //设置页的控件
        $total = $goods_model->count();
        $per = 8;
        $page = new Pagination($total,$per);
        $sql = 'select * from {{goods}} '.$page->limit;

        $goods_infos = $goods_model->findAllBySql($sql);

        $page_list = $page->fpage(array(3,4,5,6,7,8));

        //reder//带布局渲染
        $this->render('category',array('goods_infos'=>$goods_infos,'page_list'=>$page_list));
    }
    //商品详情
    function actionDetail($id){
        //根据ID获得当前商品详细信息
        //自定义方法getGoodsInfoByPk()，是模型model里的一个方法
        //该方法可以根据具体id信息获取商品详细
        //通过模型model自定义方法实现数据缓存
        $goods_info = Goods::model()->getGoodsInfoByPk($id);
//        $goods_info = Goods::model()->findByPk($id);

//         var_dump($goods_info) ;

        $this->render('detail',array('goods_info'=>$goods_info));
    }

    //DAO数据查询
    function  actionCat(){
        //通过DAO方式读取数据
        $sql = "select * from {{goods}}";
        //1.创建DAO对象
        $d_obj = Yii::app()->db->createCommand($sql);

        //2.执行sql语句
        //查询：dao对象 query()   返回一个结果对象 CDbDataReader
        //              queryAll() 直接获得全部记录结果
        //              queryRow() 获得第一条记录结果
        //              queryColum() 获得第一列的记录结果
        //非查询：execute
        /*
        $data_obj = $d_obj ->query();
        通过CDbDataReader这个类里面的方法获得具体结果
        $info = $data_obj->read(); //获得一条记录结果，
        $info = $data_obj->readAll(); //获得全部记录结果
        */
        //$info = $d_obj->queryAll(); //直接获得全部记录结果
        //$info = $d_obj->queryRow(); //直接获得第一条记录结果
        $info = $d_obj->queryColum(); //直接获得第一列记录结果

        var_dump($info);
    }
    function  actionCat2(){
        $sql = "insert into {{goods}} (goods_name,goods_price) values ((:name),(:price))";
        $d_obj = Yii::app()->db->createCommand($sql);

        $name = "yuyu";
        $price = 3434;
        //把定义的两个边路绑定到占位符里面
        $d_obj -> bindParam(':name',$name,PDO::PARAM_STR);
        $d_obj -> bindParam(':price',$price,PDO::PARAM_STR);
        $d_obj ->execute();//会返回受影响条数

        $name = "ERyu";
        $price = 3424;
        //把定义的两个边路绑定到占位符里面
        $d_obj -> bindParam(':name',$name,PDO::PARAM_STR);
        $d_obj -> bindParam(':price',$price,PDO::PARAM_STR);
        $d_obj ->execute();//会返回受影响条数
    }

}